#ifndef SPARCE_TABLE_HPP
#define SPARCE_TABLE_HPP
#include "cartesian_tree.hpp"
#include "entry.hpp"
#include "list.hpp"
using namespace poly;

struct sparce_table {
	CT tree;
	sparce_table *plx,*pux,*ply,*puy;
	int lx,ux,ly,uy;
	sparce_table(int,int);
	sparce_table(int,int,int,int);
	void clear();
	void touch();
	void ins(entry x);
	void del(entry x);
	void insdel(bool ins, entry obj, int x, int y,bool flag);
	void gen_list(list<entry> & l,int x1, int x2, int y1, int y2);
	list<entry> find(int lx, int ux, int ly, int uy);
};

#endif
